import random
from itertools import combinations

def generate_arrays(numbers):
    """
    生成所有可能的数组，使得16个数字中的任意6个数字都能同时出现在某个数组中。
    """
    if len(numbers) != 16:
        raise ValueError("必须提供16个数字！")

    # Step 1: 生成所有可能的6个数字组合
    all_combinations = list(combinations(numbers, 6))

    # Step 2: 初始化结果
    result = []

    # Step 3: 创建数组，确保每个数组都包含一个6元子集
    for combination in all_combinations:
        result.append(list(combination))

    # 计算数组数量
    array_count = len(result)


    return result, array_count

if __name__ == "__main__":
    # Step 1: 让用户输入或随机生成16个数字
    user_input = input("请输入16个数字，用空格分隔 (或直接按Enter随机生成): ")
    if user_input.strip():
        numbers = list(map(int, user_input.split()))
        if len(numbers) != 16 or len(set(numbers)) != 16:
            print("输入无效！请提供16个不重复的数字。")
            exit(1)
    else:
        numbers = random.sample(range(1, 100), 16)

    print(f"使用的数字集合: {numbers}")

    # Step 2: 生成满足条件的所有数组
    arrays, array_count = generate_arrays(numbers)

    # Step 3: 输出结果
    print(f"生成的数组数量: {array_count}")
    for i, arr in enumerate(arrays, 1):
        print(f"数组 {i}: {arr}")